package cc.rengu.oltp.service.common.dao;


import cc.rengu.oltp.service.common.entity.PayOrderInfo;

import java.util.List;

/**
 * 支付订单表操作接口
 * Created by 王成 on 2020/2/6
 */
public interface PayOrderInfoMapper {
    /**
     * 登记支付订单信息
     *
     * @param payOrderInfo 支付订单信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int insertPayOrderInfo(PayOrderInfo payOrderInfo) throws Exception;

    /**
     * 根据主键更新支付订单信息
     *
     * @param payOrderInfo 支付订单信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updatePayOrderInfoByPrimaryKey(PayOrderInfo payOrderInfo) throws Exception;

    /**
     * 根据主键查询支付订单信息
     *
     * @param instId    多法人标识
     * @param sysSeqNum 系统流水号
     * @param dstArrary 通道标识及调用序号
     * @return 支付订单信息
     * @throws Exception 异常
     */
    PayOrderInfo selectPayOrderInfoByPrimaryKey(String instId, String sysSeqNum, String... dstArrary) throws Exception;

    /**
     * 根据系统流水号查询支付订单信息
     *
     * @param instId    多法人标识
     * @param sysSeqNum 系统流水号
     * @return 支付订单信息
     * @throws Exception 异常
     */
    List<PayOrderInfo> selectPayOrderInfoBySysSeqNum(String instId, String sysSeqNum) throws Exception;

    /**
     * 根据通道流水号查询支付订单信息
     *
     * @param instId        多法人标识
     * @param msgDstId      通道标识
     * @param channelSeqNum 通道流水号
     * @return 支付订单信息
     * @throws Exception 异常
     */
    PayOrderInfo selectPayOrderInfoByChannelSeqNum(String instId, String msgDstId, String channelSeqNum) throws Exception;

    /**
     * 根据原交易流水号查询支付订单信息
     *
     * @param instId        多法人标识
     * @param origSysSeqNum 原交易流水号
     * @param dstArrary     通道标识及调用序号
     * @return 支付订单信息
     * @throws Exception 异常
     */
    List<PayOrderInfo> selectPayOrderInfoByOrigSysSeqNum(String instId, String origSysSeqNum, String... dstArrary) throws Exception;

    /**
     * 根据通道标识查询支付订单信息
     *
     * @param instId   多法人标识
     * @param msgDstId 通道标识
     * @return java.util.List<cc.rengu.oltp.service.common.entity.PayOrderInfo>
     **/
    List<PayOrderInfo> selectPayOrderInfoByInstIdMsgDstId(String instId, String msgDstId) throws Exception;

    /**
     * 根据通道对账唯一键值查询支付订单信息
     *
     * @param instId          多法人标识
     * @param msgDstId        通道标识
     * @param channelReconKey 通道对账唯一KEY
     * @return 支付订单信息
     * @throws Exception 异常
     */
    PayOrderInfo selectPayOrderInfoByChannelReconKey(String instId, String msgDstId, String channelReconKey) throws Exception;

    /**
     * 根据商户号、支付账号及授权码查询支付订单信息
     *
     * @param instId    多法人标识
     * @param mchntNo   商户号
     * @param txnNum    内部交易码
     * @param payAcctNo 支付账号
     * @param authCode  授权码
     * @return 支付订单信息
     * @throws Exception 异常
     */
    List<PayOrderInfo> selectPayOrderInfoByAcctNoAndAuthCode(String instId, String mchntNo, String txnNum, String payAcctNo, String authCode) throws Exception;
}
